2005年08月17日
川俣晶の縁側ソフトウェア技術雑記 total 9127 count

C99で追加されたC言語における可変長配列について

Written By: 川俣 晶連絡先

 いや~、焦りました。

 JIS X 3010を参照しながら仕事をしていたら、存在しないと思っていた可変長配列などという言葉が出てきて……。

 というわけで、メモ。

Cの可変長配列について §

 Cで配列を宣言する際、配列のサイズは定数で指定する必要がありました。(か、あるいは無指定)

 しかし、C99では、ここに式の値を指定することが許されるようになりました。つまり、実行時に動的にサイズを決定する配列を作ることができるのです。

 ちなみに、Visual Studio.NET 2003のCコンパイラや、Borland C++ 5.5.1のCコンパイラはこの機能をサポートしていませんでした。

しかし、間違えてはいけない…… §

 Visual Basicプログラマの場合、可変長配列と聞けばReDimステートメントを連想するかも知れません。しかし、ここでいう可変長配列とは、ReDim=作成済みの配列のサイズを変更する、という意味ではないことに注意が必要です。

 配列を宣言する際に式でサイズを指定することは、Visual Basic(や多くのプログラム言語)では当たり前のように可能でしたが、Cではそうではなかったということです。C99で、他のプログラム言語で当たり前のように可能だった機能が備わったということです。

 もっとも、だからといってCプログラマが困っていたのかというと、そういうわけではなく、mallocやallocaなどを使って上手く扱っていたのが現実だと思います。ただ、これらと比較して、いろいろな意味で扱いやすくなったのは事実だと思います。

参考リンク §

プログラミング言語 C の新機能 4. 配列

参考文献 §

JIS X 3010:2003 (ISO/IEC 9899:1999)プログラム言語C